library(tidyverse)
library(readr)
chic <- read_csv("ggplot2/ggModify/chicago-nmmaps.csv")

# 1. 添加标题
#   通过ggtitle()函数添加标题:
ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "Year", y = "Temperature (°F)") +
  ggtitle("Temperature in Chicago")

# 或者，你也可以使用labs()函数。
#   在这里你可以添加几个参数，例如副标题，标题和标签(以及如前所示的坐标轴标题)
ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(
    x = "Year",
    y = "Temperature (°F)",
    title = "Temperature in Chicago",
    subtitle = "1960-2010",
    caption = "Source: Chicago National Weather Service",
    tag = "Figure 1"
  )

# 2. 加粗标题，并在基线上添加空格
#   使用theme()函数，axis.title 和 axis.text来修改字体和边距。
#   以下所有主题元素的修改不仅适用于标题plot.title，还适用于所有其他标签，
#   如plot.subtitle, plot.caption, plot.caption, legend.title, legend.text, axis.title和axis.text。
ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "Year", y = "Temperature (°F)", title = "Temperature in Chicago") +
  theme(plot.title = element_text(
    face = "bold",
    margin = margin(10, 0, 10, 0),
    size = 14
  ))

# 3. 调整标题位置
#   一般的对齐方式(左、中、右)是由hjust()控制， hjust是horizontal adjustment的缩写。
#   当然，也可以通过vjust来调整垂直对齐。
ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(
    x = "Year",
    y = NULL,
    title = "Temperature in Chicago",
    caption = "Data: NMMAPS"
  ) +
  theme(plot.title = element_text(face = "bold.italic", size = 14, hjust = 1))

# 用户可以根据面板区域(默认)
# 或通过plot.title.position和plot.caption.position指定标题、副标题和标题的对齐方式。
# 在大多数情况下，后者实际上是更好的选择。
# 因为如果y轴标签非常长，对齐后看起来会很糟糕。
g <- ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  scale_y_continuous(
    label = function(x) {
      return(paste(x, "Degrees Fahrenheit"))
    }
  ) +
  labs(
    x = "Year",
    y = NULL,
    title = "Temperatures in Chicago between 1997 and 2001 in Degrees Fahrenheit",
    caption = "Data: NMMAPS"
  ) +
  theme(
    plot.title = element_text(face = "bold.italic", size = 1),
    plot.caption = element_text(hjust = 0)
  )
g

g + theme(plot.title.position = "plot",
          plot.caption.position = "plot")

# 4. 标题中使用非传统字体
#   在这里，我使用了showtext包，它可以方便地在R图中使用各种类型的字体(TrueType、OpenType、Type 1、web字体等)。
#   在我们加载了包之后，你需要导入必须安装在你电脑上的字体。
#   我经常使用谷歌字体，它可以用font_add_google()函数导入，但你也可以用font_add()添加其他字体。
library(showtext)
ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(
    x = "Year",
    y = NULL,
    title = "Temperatures",
    subtitle = "1997 - 2001"
  ) +
  theme(
    plot.title = element_text(
      family = "TT Arial",
      size = 18,
      hjust = 0.5
    ),
    plot.caption = element_text(
      family = "TT Courier New",
      hjust = 0.5,
      size = 16
    )
  )

# 5. 更改多行文本的间距
#   可以使用lineheight参数来更改行与行之间的间距。
#   在这个例子中，我把线条压在一起(lineheight < 1)。
ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "firebrick") +
  labs(x = "Year", y = NULL, title = "Temperatures") +
  ggtitle("Temperature in Chicago") +
  theme(plot.title = element_text(lineheight = 0.8, size = 16))
